package helloWorld;


import java.util.Vector;

import org.mt4j.MTApplication;
import org.mt4j.components.visibleComponents.widgets.MTImage;
import org.mt4j.input.inputProcessors.componentProcessors.tapProcessor.TapProcessor;
import org.mt4j.input.inputProcessors.componentProcessors.zoomProcessor.ZoomProcessor;
import org.mt4j.sceneManagement.AbstractScene;
import org.mt4j.util.MTColor;
import org.mt4j.util.math.Vector3D;
import java.lang.Math;

public class LetterScene extends AbstractScene {

	private Vector<Letter> letters;
	private LetterGestureListener myGL;
	private MTApplication mtApplication;
	private final int widthImage = 95;
	
	
	public LetterScene(MTApplication mtApplication, String name) {
		super(mtApplication, name);
		
		this.mtApplication = mtApplication;
		this.getCanvas().setFrustumCulling(true);
		this.setClearColor(new MTColor(146, 150, 188, 255));
		
		myGL = new LetterGestureListener(mtApplication);
		letters = new Vector<Letter>();
		

	}

	private void createNewLetter(char letter, String image){
		//String imageC = "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/c.jpg";
		Letter newLetter = new Letter(mtApplication.loadImage(image), mtApplication, letter);
		newLetter.setName("letter_" + letter);
		newLetter.setWidthXYGlobal(widthImage);
		newLetter.setHeightXYGlobal(widthImage);
		newLetter.unregisterAllInputProcessors();
		newLetter.registerInputProcessor(new TapProcessor(mtApplication));
		newLetter.addGestureListener(TapProcessor.class, myGL);
		newLetter.registerInputProcessor(new ZoomProcessor(mtApplication));
		newLetter.addGestureListener(ZoomProcessor.class, myGL);
		int vPos = (int) Math.floor(letters.size()/8)+1;
		int hPos = letters.size()%8+1;
		newLetter.setPositionGlobal(new Vector3D(hPos*mtApplication.width/9f, vPos*mtApplication.height/6f));	
		this.getCanvas().addChild(newLetter);
		letters.add(newLetter);
	}
	
	@Override
	public void init() {
		letters = new Vector<Letter>();
		createNewLetter('a', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/a.jpg" );
		createNewLetter('b', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/b.jpg" );
		createNewLetter('c', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/c.jpg" );
		createNewLetter('d', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/d.jpg" );
		createNewLetter('e', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/e.jpg" );
		createNewLetter('f', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/f.jpg" );
		createNewLetter('g', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/g.jpg" );
		createNewLetter('h', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/h.jpg" );
		createNewLetter('i', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/i.jpg" );
		createNewLetter('j', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/j.jpg" );
		createNewLetter('k', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/k.jpg" );
		createNewLetter('l', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/l.jpg" );
		createNewLetter('m', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/m.jpg" );
		createNewLetter('n', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/n.jpg" );
		createNewLetter('o', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/o.jpg" );
		createNewLetter('p', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/p.jpg" );
		createNewLetter('q', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/q.jpg" );
		createNewLetter('r', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/r.jpg" );
		createNewLetter('s', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/s.jpg" );
		createNewLetter('t', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/t.jpg" );
		createNewLetter('u', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/u.jpg" );
		createNewLetter('v', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/v.jpg" );
		createNewLetter('w', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/w.jpg" );
		createNewLetter('x', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/x.jpg" );
		createNewLetter('y', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/y.jpg" );
		createNewLetter('z', "http://www.student.kuleuven.be/~s0181392/mume/multitouch/alfbeeldingen/z.jpg" );
	}

	@Override
	public void shutDown() {
		for(int i = 0; i < letters.size(); ++i)
		{
			letters.get(i).unregisterAllInputProcessors();
			letters.get(i).removeFromParent();
			letters.remove(i).destroy();
		}
		getCanvas().unregisterAllInputProcessors();
	}

}
